package array;

import java.util.Arrays;

/**
 * @author 陈正龙
 * @date 2022/3/1 16:34
 * 给一个递增有序数组 去除重复的数据 将剩下的数据摆在最前面
 * 例如 给数组 [1,2,2,3,3,4] 输出结果为 [1,2,3,4,*,*] (*为舍弃数字 不作处理)
 */
public class _001 {
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,2,3,3,4};
        int count = duplicateRemoval(nums);
        System.out.println(Arrays.toString(nums));
        System.out.println("前"+count+"个数是有效数字");
    }


    /**
     * 使用双游标的思路
     */
    private static int duplicateRemoval(int[] nums) {
        int leftPoint=0;
        for (int rightPoint = 1; rightPoint < nums.length; rightPoint++) {
            if (nums[leftPoint]!=nums[rightPoint]){
                leftPoint ++;
                nums[leftPoint]=nums[rightPoint];
            }
        }
        return leftPoint+1;// 数组的位数 比 索引大1
    }
}
